phy/marvell: disable 4-port phys
authorIan Campbell <ijc@hellion.org.uk>
Wed, 20 Nov 2013 08:30:14 +0000 (08:30 +0000)
committerSalvatore Bonaccorso <carnil@debian.org>
Sat, 22 Dec 2018 08:06:45 +0000 (08:06 +0000)
The Marvell PHY was originally disabled because it can cause networking
failures on some systems. According to Lennert Buytenhek this is because some
of the variants added did not share the same register layout. Since the known
cases are all 4-ports disable those variants (indicated by a 4 in the
penultimate position of the model name) until they can be audited for
correctness.

[bwh: Also #if-out the init functions for these PHYs to avoid
 compiler warnings]

Gbp-Pq: Topic bugfix/all
Gbp-Pq: Name disable-some-marvell-phys.patch

drivers/net/phy/marvell.c

index f7c69ca34056e0e9846301b2637e6547688a91de..6c10ae6e683bb7b783bab7884f3d71b9f5de499e 100644 (file)
@@ -962,6 +962,7 @@ static int m88e1118_config_init(struct phy_device *phydev)
        return genphy_soft_reset(phydev);
 }
 
+#if 0
 static int m88e1149_config_init(struct phy_device *phydev)
 {
        int err;
@@ -987,7 +988,9 @@ static int m88e1149_config_init(struct phy_device *phydev)
 
        return genphy_soft_reset(phydev);
 }
+#endif
 
+#if 0
 static int m88e1145_config_init_rgmii(struct phy_device *phydev)
 {
        int err;
@@ -1062,6 +1065,7 @@ static int m88e1145_config_init(struct phy_device *phydev)
 
        return 0;
 }
+#endif
 
 /**
  * fiber_lpa_to_ethtool_lpa_t
@@ -2142,6 +2146,7 @@ static struct phy_driver marvell_drivers[] = {
                .get_strings = marvell_get_strings,
                .get_stats = marvell_get_stats,
        },
+#if 0
        {
                .phy_id = MARVELL_PHY_ID_88E1145,
                .phy_id_mask = MARVELL_PHY_ID_MASK,
@@ -2162,6 +2167,8 @@ static struct phy_driver marvell_drivers[] = {
                .get_strings = marvell_get_strings,
                .get_stats = marvell_get_stats,
        },
+#endif
+#if 0
        {
                .phy_id = MARVELL_PHY_ID_88E1149R,
                .phy_id_mask = MARVELL_PHY_ID_MASK,
@@ -2181,6 +2188,8 @@ static struct phy_driver marvell_drivers[] = {
                .get_strings = marvell_get_strings,
                .get_stats = marvell_get_stats,
        },
+#endif
+#if 0
        {
                .phy_id = MARVELL_PHY_ID_88E1240,
                .phy_id_mask = MARVELL_PHY_ID_MASK,
@@ -2200,6 +2209,7 @@ static struct phy_driver marvell_drivers[] = {
                .get_strings = marvell_get_strings,
                .get_stats = marvell_get_stats,
        },
+#endif
        {
                .phy_id = MARVELL_PHY_ID_88E1116R,
                .phy_id_mask = MARVELL_PHY_ID_MASK,
@@ -2336,9 +2346,9 @@ static struct mdio_device_id __maybe_unused marvell_tbl[] = {
        { MARVELL_PHY_ID_88E1111, MARVELL_PHY_ID_MASK },
        { MARVELL_PHY_ID_88E1118, MARVELL_PHY_ID_MASK },
        { MARVELL_PHY_ID_88E1121R, MARVELL_PHY_ID_MASK },
-       { MARVELL_PHY_ID_88E1145, MARVELL_PHY_ID_MASK },
-       { MARVELL_PHY_ID_88E1149R, MARVELL_PHY_ID_MASK },
-       { MARVELL_PHY_ID_88E1240, MARVELL_PHY_ID_MASK },
+/*     { MARVELL_PHY_ID_88E1145, MARVELL_PHY_ID_MASK }, */
+/*     { MARVELL_PHY_ID_88E1149R, MARVELL_PHY_ID_MASK }, */
+/*     { MARVELL_PHY_ID_88E1240, MARVELL_PHY_ID_MASK }, */
        { MARVELL_PHY_ID_88E1318S, MARVELL_PHY_ID_MASK },
        { MARVELL_PHY_ID_88E1116R, MARVELL_PHY_ID_MASK },
        { MARVELL_PHY_ID_88E1510, MARVELL_PHY_ID_MASK },